

#ifndef __CE_VECTOR3_H__
#define __CE_VECTOR3_H__

#ifdef WIN32
#define CE_FORCEINLINE __forceinline
#else
#define CE_FORCEINLINE
#endif


struct ceVector3
{
	float x;
	float y;
	float z;

	CE_FORCEINLINE ceVector3 () { }
	CE_FORCEINLINE ceVector3 (float x, float y, float z) : x(x), y(y), z(z) { }
};


static CE_FORCEINLINE ceVector3* ceVector3_Add (ceVector3* out, const ceVector3* v0, const ceVector3* v1)
{
	out->x = v0->x + v1->x;
	out->y = v0->y + v1->y;
	out->z = v0->z + v1->z;
	return out;
}

static CE_FORCEINLINE ceVector3* ceVector3_Sub (ceVector3* out, const ceVector3* v0, const ceVector3* v1)
{
	out->x = v0->x - v1->x;
	out->y = v0->y - v1->y;
	out->z = v0->z - v1->z;
	return out;
}

static CE_FORCEINLINE ceVector3* ceVector3_Mult (ceVector3* out, const ceVector3* v0, const ceVector3* v1)
{
	out->x = v0->x * v1->x;
	out->y = v0->y * v1->y;
	out->z = v0->z * v1->z;
	return out;
}

static CE_FORCEINLINE ceVector3* ceVector3_Div (ceVector3* out, const ceVector3* v0, const ceVector3* v1)
{
	out->x = v0->x / v1->x;
	out->y = v0->y / v1->y;
	out->z = v0->z / v1->z;
	return out;
}

static CE_FORCEINLINE ceVector3* ceVector3_Mult (ceVector3* out, const ceVector3* v0, const float v1)
{
	out->x = v0->x * v1;
	out->y = v0->y * v1;
	out->z = v0->z * v1;
	return out;
}

static CE_FORCEINLINE ceVector3* ceVector3_Div (ceVector3* out, const ceVector3* v0, const float v1)
{
	out->x = v0->x / v1;
	out->y = v0->y / v1;
	out->z = v0->z / v1;
	return out;
}






#endif /* ! __CE_VECTOR3_H__ */ 
